/**
 * Copyright 2018 orivil.com. All rights reserved.
 * Use of this source code is governed by a MIT-style
 * license that can be found at https://mit-license.org.
 */

package n_spider

type Storage interface {

	// 获得正在连载的书籍
	GetUnfinishedBook(ptID, ptBookID int) *Book

	// 检测图书是否已下载
	IsFinishedBook(ptID, ptBookID int) bool

	// 统计图书个数, 使用 ptID + ptBookID 检测不一定唯一, 同一本书在很多平台都拥有重复,
	// 正常下载时该值为0则下载, 覆盖下载时该值为1则下载, 否则跳过下载
	CountBooks(title, author string) int

	// 获得指定平台在本地的最后一部书
	GetLastPtBook(ptID int) *Book

	// 按平台ID创建或更新图书信息, 图书必须设置为完结状态
	SaveUnfinishedBook(platformID, ptBookID int, book *Book) error

	// 增加图书字数
	AddBookWords(ptID, ptBookID, words int)

	// 设置图书为完结状态
	SetBookFinished(ptID, ptBookID int)

	// 获得平台图书的最后一个章节
	GetLastChapter(ptID, ptBookID int) *Chapter

	// 按平台ID创建或更新
	SaveChapter(platformID, ptBookID, ptChapterID int, c *Chapter) error
}
